﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Xml;
using System.Xml.XPath;
using System.IO;
using System.Collections;


namespace WindowsFormsApplication1
{
    class XML
    {
        public void readXML() {
            string fileName = "C:\\Users\\Erick Vidal\\Documents\\SERTEC - MAX\\data.xml";
            string file = File.ReadAllText(fileName);
            
            //string xml = @"<recurrence><rule><firstDayOfWeek>mo</firstDayOfWeek><repeat><daily dayFrequency=""1"" /></repeat><windowEnd>2012-10-31T10:00:00Z</windowEnd></rule></recurrence>";
            string xml = @"<sesion></sesion>";

            StringReader stream1 = new StringReader(file);

            XPathDocument doc = new XPathDocument(stream1);

            //do whatever
            //XPathDocument doc = new XPathDocument(fileName);
            XPathNavigator nav = doc.CreateNavigator();

            // Compile a standard XPath expression
            XPathExpression expr;
            expr = nav.Compile("/catalog/cd/price");
            XPathNodeIterator iterator = nav.Select(expr);

            // Iterate on the node set
            try
            {
                while (iterator.MoveNext())
                {
                    XPathNavigator nav2 = iterator.Current.Clone();
                    Console.WriteLine("price: " + nav2.Value);
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }  
  
            /*
            using (StringReader stream = new StringReader(file))
            {


            }
            */
            
        }
        public Vista1Ingreso loadVista1Ingreso(int idUsuario, int idSesion) {
            Vista1Ingreso vi = new Vista1Ingreso();
            
            return null;
        }

        public bool saveVista1Ingreso(Vista1Ingreso vista)
        {

            // usando StringWriter para que esriba el XmlTextWriter.
            using (StringWriter str = new StringWriter())
            using (XmlTextWriter xml = new XmlTextWriter(str))
            {
                // creando el nodo Raiz
                xml.WriteStartDocument();
                xml.WriteStartElement("Sesion");
                xml.WriteWhitespace("\n");

                //Escribiendo servicio por tienda
                xml.WriteElementString("id_servicio_tienda", vista.idServicioTienda + "");
                xml.WriteWhitespace("\n  ");
                //Escribiendo tipo de cliente
                xml.WriteElementString("id_tipo_cliente", vista.idTipoCliente + "");
                xml.WriteWhitespace("\n  ");
                // Escribiendo la informacion de Pregunta Filtro
                foreach (String[] preguntaFiltro in vista.preguntaFiltroLs)
                {
                    
                    xml.WriteStartElement("pregunta_filtro");
                    xml.WriteWhitespace("\n  ");
                    {
                        xml.WriteElementString("id", preguntaFiltro[Vista1Ingreso.id_pregunta_filtro]);
                        xml.WriteWhitespace("\n  ");
                        xml.WriteElementString("respuesta", preguntaFiltro[Vista1Ingreso.respuesta]);
                        xml.WriteWhitespace("\n  ");
                        xml.WriteElementString("pregunta", preguntaFiltro[Vista1Ingreso.pregunta]);
                        xml.WriteWhitespace("\n  ");
                    }
                    xml.WriteEndElement();
                    xml.WriteWhitespace("\n");
                }// fin de la escritura pregunta Filtro
                
                //Escribiendo la informacion de Autorizaciones
                foreach (String[] autorizacion in vista.autorizacionLS)
                {

                    xml.WriteStartElement("autorizacion");
                    xml.WriteWhitespace("\n  ");
                    {
                        xml.WriteElementString("id", autorizacion[Vista1Ingreso.id_pregunta_filtro]);
                        xml.WriteWhitespace("\n  ");
                        xml.WriteElementString("respuesta", autorizacion[Vista1Ingreso.respuesta]);
                        xml.WriteWhitespace("\n  ");
                        xml.WriteElementString("pregunta", autorizacion[Vista1Ingreso.pregunta]);
                        xml.WriteWhitespace("\n  ");
                    }
                    xml.WriteEndElement();
                    xml.WriteWhitespace("\n");
                }// fin de la escritura Autorizacion

                //
                xml.WriteEndElement();
                xml.WriteEndDocument();

                // Resultado del String, Vista1Ingreso
                string result = str.ToString();
                Console.WriteLine("Length: {0}", result.Length);
                Console.WriteLine("Result: {0}", result);
            }
            //se debera almacenar toda la informacion referente a la vista1 en esta parte
            //creando un nuevo registro a la tabla temporal
            return true;
        }

    }
}
